package 力扣.动态规划;

//给两个整数数组 A 和 B ，返回两个数组中公共的、长度最长的子数组的长度。
public class findLengt {
    public static void main(String[] args) {
        int[] A={0,1,1,1,1};
        int[] B={1,0,1,0,1};
        int length = findLength(A, B);
        System.out.println(length);
    }
    public static int findLength(int[] A, int[] B) {
        if (A==null || B==null)
            return 0;
        int m=A.length;
        int n=B.length;
        int[][] dp = new int[m + 1][n + 1];
        for (int i = 1; i < m+1; i++) {
            for (int j = 1; j < n+1; j++) {
                if (A[i-1]==B[j-1])
                    dp[i][j]=dp[i-1][j-1]+1;
            }
        }
        //找到dp数组中的最大值
        int max=0;
        for (int i = 0; i <m+1 ; i++) {
            for (int j = 0; j < n+1; j++) {
                max=Math.max(max,dp[i][j]);
            }
        }
        return max;
    }
}
